Monitoring tools are commonly available for monitoring system resources. However, a monitoring tool is limited to monitoring a specific resource (e.g., memory capacity) of a computer system. With each monitoring tool being predetermined and specific to a particular system resource and its activities, the process of system monitoring can be highly complicated, and even unmanageable, when activities relating to a great number of system resources require monitoring. For example, depending on a system, a user (e.g., system administrator or software developer) may have to use three different monitoring tools to monitor three different component-related activities (e.g., virtual machine speed, central processing unit (CPU) usage, and memory capacity). Furthermore, these monitoring tools are inflexible in their monitoring tasks because their behavior, performance, assigned system component, etc., are rigidly predefined and unchangeable. Moreover, a system administrator typically has to individually install each desired monitoring tool on each system to be monitored.